package cn.hss.jdbc;

import cn.hss.jdbc.pojo.Account;

import java.sql.*;

/**使用JDBC操作数据库
 * @author 作者：HeShaoShuai
 * @Email 邮箱：2569819541@qq.com
 * @Date 日期：2023/5/5 14:17
 * @Package 包名：cn.hss.jdbc
 * @Project 项目名：JavaSE
 * @Version 1.0
 * 1.导入驱动jar包
 * 2.注册驱动（程序必须知道用的是哪一个数据库版本）
 * 3.获取数据库连接对象Connection（java代码和数据库连接的桥梁）
 * 4.定义sql
 * 5.获取执行sql语句的对象 Statement （Connection 不能直接获取对象）
 * 6.执行sql，调用方法去接受返回结果
 * 7.处理结果
 * 8.释放资源（注意！！！）*/
public class JDBCDemo {
	public static void main(String[] args) {
		//1.导入数据的驱动包
		//2.注册驱动
		ResultSet rs = null;
		PreparedStatement ps = null;
		Connection conn = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			//3.获取数据库连接对象Connection
			  conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/hlp_db",
					"root",
					"2399430940");
			 //4.定义sql
			String sql="select * from account";
			//5.获取执行sql语句的对象Statement
			ps = conn.prepareStatement(sql);
			//6.执行sql,调用方法接受返回结果
			rs = ps.executeQuery();
			Account account = new Account();
			//7.处理结果
			while (rs.next()){
				//获取结果集中的数据
				int id = rs.getInt("id");
				String name = rs.getString(2);
				double money = (double) rs.getObject("money");
				//为对象赋值
				account.setId(id);
				account.setName(name);
				account.setMoney(money);
				System.out.println(account.toString());
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e){
			e.printStackTrace();
		} finally{
			//关闭资源
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException throwables) {
					throwables.printStackTrace();
				}
			}
			if (ps != null) {
				try {
					ps.close();
				} catch (SQLException throwables) {
					throwables.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException throwables) {
					throwables.printStackTrace();
				}
			}
		}
	}
}